<!DOCTYPE html>
<html lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>set_texture_inspection_model_param [HALCON算子参考手册]</title>
<style type="text/css">
      body {
    color: #000000;
    background-color: #ffffff;
    margin: 0;
    font-family: Arial, Helvetica, sans-serif;
}

.body_main {
    margin-left: 35px;
    margin-right: 35px;
}

@media screen and (min-width:992px) {

    .body_main {
        margin-left: 10%;
        margin-right: 10%;
    }

    table.toctable {
        width: 80%
    }
}

@media screen and (min-width:1400px) {

    .body_main {
        margin-left: 15%;
        margin-right: 15%;
    }

    table.toctable {
        width: 70%
    }
}

body>div ul ul {
    margin-left: inherit;
}

a:link {
    color: #0044cc;
}

a:link,
a:visited {
    text-decoration: none;
}

a:link:hover,
a:visited:hover {
    text-decoration: underline;
}

th {
    text-align: left;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    text-rendering: optimizeLegibility;
    color: #666666;
}

code {
    font-family: monospace,monospace;
}

h1 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

h2 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

hr {
    border: 0;
    border-top: solid 1px #f28d26;
}

.pre {
    display: block;
    padding-bottom: 1ex;
    font-family: monospace;
    white-space: pre;
}

pre {
    font-family: monospace, monospace;
    padding: 1ex;
    white-space: pre-wrap;
}

.toc {
    font-size: 80%;
    border-top: 1px dashed #f28d26;
    border-bottom: 1px dashed #f28d26;
    padding-top: 5px;
    padding-bottom: 5px;
}

.inv {
    margin: 0;
    border: 0;
    padding: 0;
}

.banner {
    color: #666666;
    padding-left: 1em;
}

.logo {
    background-color: white;
}

.keyboard {
    font-size: 80%;
    padding-left: 3px;
    padding-right: 3px;
    border-radius: 5px;
    border-width: 1px;
    border-style: solid;
    border-color: #f28d26;
    background-color: #f3f3f3;
}

.warning {
    margin-top: 2ex;
    margin-bottom: 1ex;
    padding: 10px;
    text-align: center;
    border: 1px solid;
    color: #bb0000;
    background-color: #fff7f7
}

.imprint {
    margin-top: 1ex;
    font-size: 80%;
    color: #666666;
}

.imprinthead {
    font-weight: bolder;
    color: #666666;
}

.indexlink {
    text-align: right;
    padding-bottom: 5px;
}

.postscript {
    margin-top: 2ex;
    font-size: 80%;
    color: #666666
}

.evenrow {
    background-color: #e7e7ef;
    vertical-align: top;
}

.oddrow {
    background-color: #f7f7ff;
    vertical-align: top;
}

.headrow {
    background-color: #97979f;
    color: #ffffff;
    vertical-align: top;
}

.logorow {
    vertical-align: top;
}

.error {
    color: red;
}

.var {
    font-style: italic
}

.halconoperator {
    font-family: monospace, monospace;
}

span.operator {
    font-family: monospace, monospace;
}

span.procedure {
    font-family: monospace, monospace;
}

span.operation {
    font-family: monospace, monospace;
}

span.feature {
    font-family: Arial, Helvetica, Homerton, sans-serif;
}

ul {
    padding-left: 1.2em;
}

li.dot {
    list-style-type: square;
    color: #f28d26;
}

.breadcrumb {
    font-size: 80%;
    color: white;
    background-color: #062d64;
    margin-bottom: 20px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 15px;
}

.webbar {
    font-size: 80%;
    background-color: #dddddd;
    margin-top: 0px;
    margin-left: -35px;
    margin-right: -35px;
    margin-bottom: 0px;
    padding-top: 5px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 5px;
}

.footer {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    border-top: 1px dashed #f28d26;
    font-size: 80%;
    color: #666666;
    padding-bottom: 8px;
}

.footer .socialmedia a {
    padding-left: 7px;
}

.socialmedia {
    padding-top: 10px;
}

.copyright {
    margin-top: 19px;
}

.breadcrumb a {
    color: #ffffff;
    border-bottom: 1px solid white;
}

.breadcrumb a:link:hover,
.breadcrumb a:visited:hover {
    text-decoration: none;
    border-bottom: none;
}

.heading {
    margin-top: 1ex;
    font-size: 110%;
    font-weight: bold;
    color: #666666;
}

.text {
    color: black;
}

.example {
    font-size: 80%;
    background-color: #f3f3f3;
    border: 1px dashed #666666;
    padding: 10px;
}

.displaymath {
    display: block;
    text-align: center;
    margin-top: 1ex;
    margin-bottom: 1ex;
}

.title {
    float: left;
    padding-top: 3px;
    padding-bottom: 3px;
}

.signnote {
    font-family: Arial, Helvetica, Homerton, sans-serif;
    font-size: 80%;
    color: #666666;
    font-weight: lighter;
    font-style: italic
}

.par {
    margin-bottom: 1.5em;
}

.parhead {
    text-align: right;
}

.parname {
    float: left;
}

.pardesc {
    font-size: 85%;
    margin-top: 0.5em;
    margin-bottom: 0.5em;
    margin-left: 2em;
}

.parcat {
    color: #666;
    font-weight: bold;
}

*[data-if=cpp],
*[data-if=c],
*[data-if=dotnet],
*[data-if=com],
*[data-if=python] {
    display: none;
}

.tabbar {
    text-align: right;
    border-bottom: 1px solid #f28d26;
    margin-bottom: 0.5em;
}

ul.tabs {
    padding-top: 3px;
    padding-bottom: 3px;
    margin-top: 10px;
    margin-bottom: 0;
    font-size: 80%
}

ul.tabs li {
    padding-top: 3px;
    padding-bottom: 3px;
    display: inline;
    overflow: hidden;
    list-style-type: none;
    margin: 0;
    margin-left: 8px;
    border-top: 1px solid #666;
    border-left: 1px solid #666;
    border-right: 1px solid #666;
}

ul.tabs li.active {
    border-left: 1px solid #f28d26;
    border-right: 1px solid #f28d26;
    border-top: 1px solid #f28d26;
    border-bottom: 1px solid #fff;
}

ul.tabs li.inactive {
    background-color: #eee;
}

ul.tabs li a {
    padding-left: 5px;
    padding-right: 5px;
    color: #666;
}

ul.tabs li a:link:hover {
    text-decoration: none;
}

ul.tabs li.inactive a {
    color: #666;
}

ul.tabs li.active a {
    color: black;
}

dl.generic dd {
    margin-bottom: 1em;
}

.pari {
    color: olive;
}

.paro {
    color: maroon;
}

.comment {
    font-size: 80%;
    color: green;
    white-space: nowrap;
}

table.grid {
    border-collapse: collapse;
}

table.grid td {
    padding: 5px;
    border: 1px solid;
}

table.layout {
    border: 0px;
}

table.layout td {
    padding: 5px;
}

table.table {
    border-collapse: collapse;
}

table.table td {
    padding: 5px;
    border-left: 0px;
    border-right: 0px;
}

table.table tr:last-child {
    border-bottom: 1px solid;
}

table.table th {
    padding: 5px;
    border-top: 1px solid;
    border-bottom: 1px solid;
    border-left: 0px;
    border-right: 0px;
}

.details_summary {
    cursor: pointer;
}

table.toctable {
    width: 100%;
}

table.toctable col:first-child {
    width: 20%;
}

table.toctable col:nth-last-child(2) {
    width: 8%;
}

table.altcolored tr:nth-child(even) {
    background-color: #f3f3f3;
}

    </style>
<!--OP_REF_STYLE_END-->
<script>
    <!--
var active_lang='hdevelop';function switchVisibility(obj,active_lang,new_lang)
{var display_style='inline';
for(var i=0;i<obj.length;i++)
{if(obj.item(i).getAttribute('data-if')==new_lang)
{obj.item(i).style.display=display_style;}
if(obj.item(i).getAttribute('data-if')==active_lang)
{obj.item(i).style.display='none';}}
return;}
function toggleLanguage(new_lang,initial)
{if(active_lang!=new_lang)
{var lis=document.getElementsByTagName('li');for(var i=0;i<lis.length;i++)
{if(lis.item(i).id=='syn-'+new_lang)
{lis.item(i).className='active';}
else
{lis.item(i).className='inactive';}}
var divs=document.getElementsByTagName('div');var spans=document.getElementsByTagName('span');switchVisibility(divs,active_lang,new_lang);switchVisibility(spans,active_lang,new_lang);if(!initial)
{setCookie("halcon_reference_language",new_lang,null,null);}
active_lang=new_lang;}
return;}
function setCookie(name,value,domain,exp_offset,path,secure)
{localStorage.setItem(name,value);}
function getCookie(name)
{return localStorage.getItem(name);}
function initialize()
{var qs=location.href.split('?')[1];var qs_lang_raw=location.href.split('interface=')[1];var qs_lang;if(qs_lang_raw)
{qs_lang=qs_lang_raw.split('#')[0];}
var cookie_lang=getCookie("halcon_reference_language");var new_lang;if((qs_lang=="hdevelop")||(qs_lang=="dotnet")||(qs_lang=="python")||(qs_lang=="cpp")||(qs_lang=="c"))
{new_lang=qs_lang;setCookie("halcon_reference_language",new_lang,null,null);}
else if((cookie_lang=="hdevelop")||(cookie_lang=="dotnet")||(cookie_lang=="python")||(cookie_lang=="cpp")||(cookie_lang=="c"))
{new_lang=cookie_lang;}
else
{new_lang="hdevelop";}
toggleLanguage(new_lang,1);return;}
-->

  </script>
</head>
<body onload="initialize();">
<div class="breadcrumb">
<br class="inv"><a href="index.html">目录</a> / <a href="toc_inspection.html">Inspection</a> / <a href="toc_inspection_texture.html">Texture Inspection</a><br class="inv">
</div>
<div class="body_main">
<div class="tabbar"><ul class="tabs">
<li id="syn-hdevelop" class="active"><a href="javascript:void(0);" onclick="toggleLanguage('hdevelop')" onfocus="blur()">HDevelop</a></li>
<li id="syn-dotnet" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('dotnet')" onfocus="blur()">.NET</a></li>
<li id="syn-python" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('python')" onfocus="blur()">Python</a></li>
<li id="syn-cpp" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('cpp')" onfocus="blur()">C++</a></li>
<li id="syn-c" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('c')" onfocus="blur()">C</a></li>
</ul></div>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<!--OP_REF_HEADER_END-->
<h1 id="sec_name">
<span data-if="hdevelop" style="display:inline;">set_texture_inspection_model_param</span><span data-if="c" style="display:none;">T_set_texture_inspection_model_param</span><span data-if="cpp" style="display:none;">SetTextureInspectionModelParam</span><span data-if="dotnet" style="display:none;">SetTextureInspectionModelParam</span><span data-if="python" style="display:none;">set_texture_inspection_model_param</span> (算子名称)</h1>
<h2>名称</h2>
<p><code><span data-if="hdevelop" style="display:inline;">set_texture_inspection_model_param</span><span data-if="c" style="display:none;">T_set_texture_inspection_model_param</span><span data-if="cpp" style="display:none;">SetTextureInspectionModelParam</span><span data-if="dotnet" style="display:none;">SetTextureInspectionModelParam</span><span data-if="python" style="display:none;">set_texture_inspection_model_param</span></code> — Set parameters of a texture inspection model.</p>
<h2 id="sec_synopsis">参数签名</h2>
<div data-if="hdevelop" style="display:inline;">
<p>
<code><b>set_texture_inspection_model_param</b>( :  : <a href="#TextureInspectionModel"><i>TextureInspectionModel</i></a>, <a href="#GenParamName"><i>GenParamName</i></a>, <a href="#GenParamValue"><i>GenParamValue</i></a> : )</code></p>
</div>
<div data-if="c" style="display:none;">
<p>
<code>Herror <b>T_set_texture_inspection_model_param</b>(const Htuple <a href="#TextureInspectionModel"><i>TextureInspectionModel</i></a>, const Htuple <a href="#GenParamName"><i>GenParamName</i></a>, const Htuple <a href="#GenParamValue"><i>GenParamValue</i></a>)</code></p>
</div>
<div data-if="cpp" style="display:none;">
<p>
<code>void <b>SetTextureInspectionModelParam</b>(const HTuple&amp; <a href="#TextureInspectionModel"><i>TextureInspectionModel</i></a>, const HTuple&amp; <a href="#GenParamName"><i>GenParamName</i></a>, const HTuple&amp; <a href="#GenParamValue"><i>GenParamValue</i></a>)</code></p>
<p>
<code>void <a href="HTextureInspectionModel.html">HTextureInspectionModel</a>::<b>SetTextureInspectionModelParam</b>(const HTuple&amp; <a href="#GenParamName"><i>GenParamName</i></a>, const HTuple&amp; <a href="#GenParamValue"><i>GenParamValue</i></a>) const</code></p>
<p>
<code>void <a href="HTextureInspectionModel.html">HTextureInspectionModel</a>::<b>SetTextureInspectionModelParam</b>(const HString&amp; <a href="#GenParamName"><i>GenParamName</i></a>, Hlong <a href="#GenParamValue"><i>GenParamValue</i></a>) const</code></p>
<p>
<code>void <a href="HTextureInspectionModel.html">HTextureInspectionModel</a>::<b>SetTextureInspectionModelParam</b>(const char* <a href="#GenParamName"><i>GenParamName</i></a>, Hlong <a href="#GenParamValue"><i>GenParamValue</i></a>) const</code></p>
<p>
<code>void <a href="HTextureInspectionModel.html">HTextureInspectionModel</a>::<b>SetTextureInspectionModelParam</b>(const wchar_t* <a href="#GenParamName"><i>GenParamName</i></a>, Hlong <a href="#GenParamValue"><i>GenParamValue</i></a>) const  <span class="signnote">
            (
            Windows only)
          </span></code></p>
</div>
<div data-if="com" style="display:none;"></div>
<div data-if="dotnet" style="display:none;">
<p>
<code>static void <a href="HOperatorSet.html">HOperatorSet</a>.<b>SetTextureInspectionModelParam</b>(<a href="HTuple.html">HTuple</a> <a href="#TextureInspectionModel"><i>textureInspectionModel</i></a>, <a href="HTuple.html">HTuple</a> <a href="#GenParamName"><i>genParamName</i></a>, <a href="HTuple.html">HTuple</a> <a href="#GenParamValue"><i>genParamValue</i></a>)</code></p>
<p>
<code>void <a href="HTextureInspectionModel.html">HTextureInspectionModel</a>.<b>SetTextureInspectionModelParam</b>(<a href="HTuple.html">HTuple</a> <a href="#GenParamName"><i>genParamName</i></a>, <a href="HTuple.html">HTuple</a> <a href="#GenParamValue"><i>genParamValue</i></a>)</code></p>
<p>
<code>void <a href="HTextureInspectionModel.html">HTextureInspectionModel</a>.<b>SetTextureInspectionModelParam</b>(string <a href="#GenParamName"><i>genParamName</i></a>, int <a href="#GenParamValue"><i>genParamValue</i></a>)</code></p>
</div>
<div data-if="python" style="display:none;">
<p>
<code>def <b>set_texture_inspection_model_param</b>(<a href="#TextureInspectionModel"><i>texture_inspection_model</i></a>: HHandle, <a href="#GenParamName"><i>gen_param_name</i></a>: MaybeSequence[str], <a href="#GenParamValue"><i>gen_param_value</i></a>: MaybeSequence[Union[int, float, str]]) -&gt; None</code></p>
</div>
<h2 id="sec_description">描述</h2>
<p>该算子 <code><span data-if="hdevelop" style="display:inline">set_texture_inspection_model_param</span><span data-if="c" style="display:none">set_texture_inspection_model_param</span><span data-if="cpp" style="display:none">SetTextureInspectionModelParam</span><span data-if="com" style="display:none">SetTextureInspectionModelParam</span><span data-if="dotnet" style="display:none">SetTextureInspectionModelParam</span><span data-if="python" style="display:none">set_texture_inspection_model_param</span></code> is used to
manipulate the parameters of a texture inspection model
<a href="#TextureInspectionModel"><i><code><span data-if="hdevelop" style="display:inline">TextureInspectionModel</span><span data-if="c" style="display:none">TextureInspectionModel</span><span data-if="cpp" style="display:none">TextureInspectionModel</span><span data-if="com" style="display:none">TextureInspectionModel</span><span data-if="dotnet" style="display:none">textureInspectionModel</span><span data-if="python" style="display:none">texture_inspection_model</span></code></i></a>. The current parameter settings
can be queried with 该算子 <a href="get_texture_inspection_model_param.html"><code><span data-if="hdevelop" style="display:inline">get_texture_inspection_model_param</span><span data-if="c" style="display:none">get_texture_inspection_model_param</span><span data-if="cpp" style="display:none">GetTextureInspectionModelParam</span><span data-if="com" style="display:none">GetTextureInspectionModelParam</span><span data-if="dotnet" style="display:none">GetTextureInspectionModelParam</span><span data-if="python" style="display:none">get_texture_inspection_model_param</span></code></a>.
</p>
<p>For an explanation of the concept of the texture inspection
see the introduction of chapter <a href="toc_inspection_texture.html">Inspection / Texture Inspection</a>.
</p>
<p><b>General parameters:</b>
</p>
<dl class="generic">

<dt><b><i><span data-if="hdevelop" style="display:inline">'num_levels'</span><span data-if="c" style="display:none">"num_levels"</span><span data-if="cpp" style="display:none">"num_levels"</span><span data-if="com" style="display:none">"num_levels"</span><span data-if="dotnet" style="display:none">"num_levels"</span><span data-if="python" style="display:none">"num_levels"</span></i>:</b></dt>
<dd>
<p>
 Determines the number of pyramid levels
used within the texture inspection process. The number
of pyramid levels affects the inspection results as well as the runtime of
<a href="train_texture_inspection_model.html"><code><span data-if="hdevelop" style="display:inline">train_texture_inspection_model</span><span data-if="c" style="display:none">train_texture_inspection_model</span><span data-if="cpp" style="display:none">TrainTextureInspectionModel</span><span data-if="com" style="display:none">TrainTextureInspectionModel</span><span data-if="dotnet" style="display:none">TrainTextureInspectionModel</span><span data-if="python" style="display:none">train_texture_inspection_model</span></code></a> and
<a href="apply_texture_inspection_model.html"><code><span data-if="hdevelop" style="display:inline">apply_texture_inspection_model</span><span data-if="c" style="display:none">apply_texture_inspection_model</span><span data-if="cpp" style="display:none">ApplyTextureInspectionModel</span><span data-if="com" style="display:none">ApplyTextureInspectionModel</span><span data-if="dotnet" style="display:none">ApplyTextureInspectionModel</span><span data-if="python" style="display:none">apply_texture_inspection_model</span></code></a>. Per default the number of
levels is estimated by the size of the training images. It should be noted,
that no more than 5 pyramid levels are used by the estimation process.
</p>
<p>Changing this parameter can require a complete new training of the texture
inspection model. No retraining is required if the number of levels of a
trained texture inspection model are merely reduced.
</p>
<p>If the texture in your images is very coarse, the lower pyramid levels
may not be needed for a successful inspection. Then you can save
a lot of runtime by setting the levels of interest explicitly with
<i><span data-if="hdevelop" style="display:inline">'levels'</span><span data-if="c" style="display:none">"levels"</span><span data-if="cpp" style="display:none">"levels"</span><span data-if="com" style="display:none">"levels"</span><span data-if="dotnet" style="display:none">"levels"</span><span data-if="python" style="display:none">"levels"</span></i>.
</p>
<p><i>Values:</i> integer values larger or equal to 1 or <i><span data-if="hdevelop" style="display:inline">'auto'</span><span data-if="c" style="display:none">"auto"</span><span data-if="cpp" style="display:none">"auto"</span><span data-if="com" style="display:none">"auto"</span><span data-if="dotnet" style="display:none">"auto"</span><span data-if="python" style="display:none">"auto"</span></i>
</p>
<p><i>Default:</i> <i><span data-if="hdevelop" style="display:inline">'auto'</span><span data-if="c" style="display:none">"auto"</span><span data-if="cpp" style="display:none">"auto"</span><span data-if="com" style="display:none">"auto"</span><span data-if="dotnet" style="display:none">"auto"</span><span data-if="python" style="display:none">"auto"</span></i>
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'levels'</span><span data-if="c" style="display:none">"levels"</span><span data-if="cpp" style="display:none">"levels"</span><span data-if="com" style="display:none">"levels"</span><span data-if="dotnet" style="display:none">"levels"</span><span data-if="python" style="display:none">"levels"</span></i>:</b></dt>
<dd>
<p>
 Determines the pyramid levels
used within the texture inspection process. The number
of pyramid levels affects the inspection results as well as the runtime of
<a href="train_texture_inspection_model.html"><code><span data-if="hdevelop" style="display:inline">train_texture_inspection_model</span><span data-if="c" style="display:none">train_texture_inspection_model</span><span data-if="cpp" style="display:none">TrainTextureInspectionModel</span><span data-if="com" style="display:none">TrainTextureInspectionModel</span><span data-if="dotnet" style="display:none">TrainTextureInspectionModel</span><span data-if="python" style="display:none">train_texture_inspection_model</span></code></a> and
<a href="apply_texture_inspection_model.html"><code><span data-if="hdevelop" style="display:inline">apply_texture_inspection_model</span><span data-if="c" style="display:none">apply_texture_inspection_model</span><span data-if="cpp" style="display:none">ApplyTextureInspectionModel</span><span data-if="com" style="display:none">ApplyTextureInspectionModel</span><span data-if="dotnet" style="display:none">ApplyTextureInspectionModel</span><span data-if="python" style="display:none">apply_texture_inspection_model</span></code></a>. Per default the pyramid levels
are determined by the value of <i><span data-if="hdevelop" style="display:inline">'num_levels'</span><span data-if="c" style="display:none">"num_levels"</span><span data-if="cpp" style="display:none">"num_levels"</span><span data-if="com" style="display:none">"num_levels"</span><span data-if="dotnet" style="display:none">"num_levels"</span><span data-if="python" style="display:none">"num_levels"</span></i>. If for example
<i><span data-if="hdevelop" style="display:inline">'num_levels'</span><span data-if="c" style="display:none">"num_levels"</span><span data-if="cpp" style="display:none">"num_levels"</span><span data-if="com" style="display:none">"num_levels"</span><span data-if="dotnet" style="display:none">"num_levels"</span><span data-if="python" style="display:none">"num_levels"</span></i> is set to four, then the texture inspection is
performed for levels 1 to 4.
If all available levels should be trained, the value has to be set to
<i><span data-if="hdevelop" style="display:inline">'auto'</span><span data-if="c" style="display:none">"auto"</span><span data-if="cpp" style="display:none">"auto"</span><span data-if="com" style="display:none">"auto"</span><span data-if="dotnet" style="display:none">"auto"</span><span data-if="python" style="display:none">"auto"</span></i>.
</p>
<p>Changing this parameter can require a complete new training of the texture
inspection model. No retraining is required if the number of levels of a
trained texture inspection model are merely reduced.
</p>
<p>If the texture in your images is very coarse, the lower pyramid levels
may not be needed for a successful inspection. Then you can save
a lot of runtime by excluding unwanted levels by setting the pyramid
levels with <i><span data-if="hdevelop" style="display:inline">'levels'</span><span data-if="c" style="display:none">"levels"</span><span data-if="cpp" style="display:none">"levels"</span><span data-if="com" style="display:none">"levels"</span><span data-if="dotnet" style="display:none">"levels"</span><span data-if="python" style="display:none">"levels"</span></i> explicitly.
</p>
<p>In order to avoid confusions regarding the returned tuple length,
<i><span data-if="hdevelop" style="display:inline">'levels'</span><span data-if="c" style="display:none">"levels"</span><span data-if="cpp" style="display:none">"levels"</span><span data-if="com" style="display:none">"levels"</span><span data-if="dotnet" style="display:none">"levels"</span><span data-if="python" style="display:none">"levels"</span></i> can only be set alone i.e. without passing any other
parameter to <code><span data-if="hdevelop" style="display:inline">set_texture_inspection_model_param</span><span data-if="c" style="display:none">set_texture_inspection_model_param</span><span data-if="cpp" style="display:none">SetTextureInspectionModelParam</span><span data-if="com" style="display:none">SetTextureInspectionModelParam</span><span data-if="dotnet" style="display:none">SetTextureInspectionModelParam</span><span data-if="python" style="display:none">set_texture_inspection_model_param</span></code>.
</p>
<p><i>Values:</i> a monotonically increasing tuple of integer values larger
or equal to 1, or <i><span data-if="hdevelop" style="display:inline">'auto'</span><span data-if="c" style="display:none">"auto"</span><span data-if="cpp" style="display:none">"auto"</span><span data-if="com" style="display:none">"auto"</span><span data-if="dotnet" style="display:none">"auto"</span><span data-if="python" style="display:none">"auto"</span></i>
</p>
<p><i>Default:</i> <i><span data-if="hdevelop" style="display:inline">'auto'</span><span data-if="c" style="display:none">"auto"</span><span data-if="cpp" style="display:none">"auto"</span><span data-if="com" style="display:none">"auto"</span><span data-if="dotnet" style="display:none">"auto"</span><span data-if="python" style="display:none">"auto"</span></i>
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'gen_result_handle'</span><span data-if="c" style="display:none">"gen_result_handle"</span><span data-if="cpp" style="display:none">"gen_result_handle"</span><span data-if="com" style="display:none">"gen_result_handle"</span><span data-if="dotnet" style="display:none">"gen_result_handle"</span><span data-if="python" style="display:none">"gen_result_handle"</span></i>:</b></dt>
<dd>
<p>
 This parameter determines whether or
not a result handle is returned by <a href="apply_texture_inspection_model.html"><code><span data-if="hdevelop" style="display:inline">apply_texture_inspection_model</span><span data-if="c" style="display:none">apply_texture_inspection_model</span><span data-if="cpp" style="display:none">ApplyTextureInspectionModel</span><span data-if="com" style="display:none">ApplyTextureInspectionModel</span><span data-if="dotnet" style="display:none">ApplyTextureInspectionModel</span><span data-if="python" style="display:none">apply_texture_inspection_model</span></code></a>.
If set to <i><span data-if="hdevelop" style="display:inline">'true'</span><span data-if="c" style="display:none">"true"</span><span data-if="cpp" style="display:none">"true"</span><span data-if="com" style="display:none">"true"</span><span data-if="dotnet" style="display:none">"true"</span><span data-if="python" style="display:none">"true"</span></i>, the individual pyramid level results can be
queried from the texture result handle with
<a href="get_texture_inspection_result_object.html"><code><span data-if="hdevelop" style="display:inline">get_texture_inspection_result_object</span><span data-if="c" style="display:none">get_texture_inspection_result_object</span><span data-if="cpp" style="display:none">GetTextureInspectionResultObject</span><span data-if="com" style="display:none">GetTextureInspectionResultObject</span><span data-if="dotnet" style="display:none">GetTextureInspectionResultObject</span><span data-if="python" style="display:none">get_texture_inspection_result_object</span></code></a>.
This is useful for debugging and fine tuning.
</p>
<p>If set to <i><span data-if="hdevelop" style="display:inline">'false'</span><span data-if="c" style="display:none">"false"</span><span data-if="cpp" style="display:none">"false"</span><span data-if="com" style="display:none">"false"</span><span data-if="dotnet" style="display:none">"false"</span><span data-if="python" style="display:none">"false"</span></i>,
<a href="apply_texture_inspection_model.html"><code><span data-if="hdevelop" style="display:inline">apply_texture_inspection_model</span><span data-if="c" style="display:none">apply_texture_inspection_model</span><span data-if="cpp" style="display:none">ApplyTextureInspectionModel</span><span data-if="com" style="display:none">ApplyTextureInspectionModel</span><span data-if="dotnet" style="display:none">ApplyTextureInspectionModel</span><span data-if="python" style="display:none">apply_texture_inspection_model</span></code></a> only returns a novelty region.
</p>
<p><i>Values:</i> <i><span data-if="hdevelop" style="display:inline">'true'</span><span data-if="c" style="display:none">"true"</span><span data-if="cpp" style="display:none">"true"</span><span data-if="com" style="display:none">"true"</span><span data-if="dotnet" style="display:none">"true"</span><span data-if="python" style="display:none">"true"</span></i>, <i><span data-if="hdevelop" style="display:inline">'false'</span><span data-if="c" style="display:none">"false"</span><span data-if="cpp" style="display:none">"false"</span><span data-if="com" style="display:none">"false"</span><span data-if="dotnet" style="display:none">"false"</span><span data-if="python" style="display:none">"false"</span></i>
</p>
<p><i>Default:</i> <i><span data-if="hdevelop" style="display:inline">'false'</span><span data-if="c" style="display:none">"false"</span><span data-if="cpp" style="display:none">"false"</span><span data-if="com" style="display:none">"false"</span><span data-if="dotnet" style="display:none">"false"</span><span data-if="python" style="display:none">"false"</span></i>
</p>
</dd>
</dl>
<p><b>Parameters which influence the automatic novelty threshold
        calculation:</b>
</p>
<dl class="generic">


<dt><b><i><span data-if="hdevelop" style="display:inline">'novelty_threshold'</span><span data-if="c" style="display:none">"novelty_threshold"</span><span data-if="cpp" style="display:none">"novelty_threshold"</span><span data-if="com" style="display:none">"novelty_threshold"</span><span data-if="dotnet" style="display:none">"novelty_threshold"</span><span data-if="python" style="display:none">"novelty_threshold"</span></i>:</b></dt>
<dd>
<p>

This parameter sets the values of the novelty thresholds, which
distinguish between defective and non-defective texture. The
novelty thresholds are passed as a tuple and are set for all
pyramid levels at once. Therefore, the number of elements must be equal
to the number of pyramid levels <i><span data-if="hdevelop" style="display:inline">'num_levels'</span><span data-if="c" style="display:none">"num_levels"</span><span data-if="cpp" style="display:none">"num_levels"</span><span data-if="com" style="display:none">"num_levels"</span><span data-if="dotnet" style="display:none">"num_levels"</span><span data-if="python" style="display:none">"num_levels"</span></i>.
</p>
<p>Setting the novelty thresholds prior to training
has no effect since the training automatically determines novelty
thresholds. Hence the novelty thresholds should be adapted after the
training. A typical use case is the fine tuning to optimize the results of
<a href="apply_texture_inspection_model.html"><code><span data-if="hdevelop" style="display:inline">apply_texture_inspection_model</span><span data-if="c" style="display:none">apply_texture_inspection_model</span><span data-if="cpp" style="display:none">ApplyTextureInspectionModel</span><span data-if="com" style="display:none">ApplyTextureInspectionModel</span><span data-if="dotnet" style="display:none">ApplyTextureInspectionModel</span><span data-if="python" style="display:none">apply_texture_inspection_model</span></code></a>. Please note, if the novelty
thresholds have been set explicitly, a new call of
<a href="train_texture_inspection_model.html"><code><span data-if="hdevelop" style="display:inline">train_texture_inspection_model</span><span data-if="c" style="display:none">train_texture_inspection_model</span><span data-if="cpp" style="display:none">TrainTextureInspectionModel</span><span data-if="com" style="display:none">TrainTextureInspectionModel</span><span data-if="dotnet" style="display:none">TrainTextureInspectionModel</span><span data-if="python" style="display:none">train_texture_inspection_model</span></code></a> will re-estimate the
novelty thresholds automatically and overwrite any explicitly set novelty
thresholds.
</p>
<p>It is possible to add an index to set the novelty threshold of a
specific pyramid level. For example, <i><span data-if="hdevelop" style="display:inline">'novelty_threshold_3'</span><span data-if="c" style="display:none">"novelty_threshold_3"</span><span data-if="cpp" style="display:none">"novelty_threshold_3"</span><span data-if="com" style="display:none">"novelty_threshold_3"</span><span data-if="dotnet" style="display:none">"novelty_threshold_3"</span><span data-if="python" style="display:none">"novelty_threshold_3"</span></i> sets the
novelty threshold for the third pyramid level.
</p>
<p><i>Values:</i> integer or float values larger or equal to 0 and smaller
or equal to 710
</p>
<p><i>Default:</i> Is determined by <a href="train_texture_inspection_model.html"><code><span data-if="hdevelop" style="display:inline">train_texture_inspection_model</span><span data-if="c" style="display:none">train_texture_inspection_model</span><span data-if="cpp" style="display:none">TrainTextureInspectionModel</span><span data-if="com" style="display:none">TrainTextureInspectionModel</span><span data-if="dotnet" style="display:none">TrainTextureInspectionModel</span><span data-if="python" style="display:none">train_texture_inspection_model</span></code></a>
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'sensitivity'</span><span data-if="c" style="display:none">"sensitivity"</span><span data-if="cpp" style="display:none">"sensitivity"</span><span data-if="com" style="display:none">"sensitivity"</span><span data-if="dotnet" style="display:none">"sensitivity"</span><span data-if="python" style="display:none">"sensitivity"</span></i>:</b></dt>
<dd>
<p>
 This parameter influences the sensitivity
of the novelty thresholds which are determined during the training with
<a href="train_texture_inspection_model.html"><code><span data-if="hdevelop" style="display:inline">train_texture_inspection_model</span><span data-if="c" style="display:none">train_texture_inspection_model</span><span data-if="cpp" style="display:none">TrainTextureInspectionModel</span><span data-if="com" style="display:none">TrainTextureInspectionModel</span><span data-if="dotnet" style="display:none">TrainTextureInspectionModel</span><span data-if="python" style="display:none">train_texture_inspection_model</span></code></a>. Per default
<i><span data-if="hdevelop" style="display:inline">'sensitivity'</span><span data-if="c" style="display:none">"sensitivity"</span><span data-if="cpp" style="display:none">"sensitivity"</span><span data-if="com" style="display:none">"sensitivity"</span><span data-if="dotnet" style="display:none">"sensitivity"</span><span data-if="python" style="display:none">"sensitivity"</span></i> is set to 0.0, which means the novelty thresholds
from the training are used directly when calling
<a href="apply_texture_inspection_model.html"><code><span data-if="hdevelop" style="display:inline">apply_texture_inspection_model</span><span data-if="c" style="display:none">apply_texture_inspection_model</span><span data-if="cpp" style="display:none">ApplyTextureInspectionModel</span><span data-if="com" style="display:none">ApplyTextureInspectionModel</span><span data-if="dotnet" style="display:none">ApplyTextureInspectionModel</span><span data-if="python" style="display:none">apply_texture_inspection_model</span></code></a>. If a negative value for the
parameter <i><span data-if="hdevelop" style="display:inline">'sensitivity'</span><span data-if="c" style="display:none">"sensitivity"</span><span data-if="cpp" style="display:none">"sensitivity"</span><span data-if="com" style="display:none">"sensitivity"</span><span data-if="dotnet" style="display:none">"sensitivity"</span><span data-if="python" style="display:none">"sensitivity"</span></i> is used, the value is added to the novelty
boundaries.
Hence, a sensitivity value below 0.0 increments the novelty thresholds and
therefore leads to potentially fewer detected errors. If instead a positive
value is set, the novelty thresholds are decremented which leads to
potentially more detected errors.
</p>
<p>The automatically determined novelty thresholds can be changed
after the training with the parameter <i><span data-if="hdevelop" style="display:inline">'novelty_threshold'</span><span data-if="c" style="display:none">"novelty_threshold"</span><span data-if="cpp" style="display:none">"novelty_threshold"</span><span data-if="com" style="display:none">"novelty_threshold"</span><span data-if="dotnet" style="display:none">"novelty_threshold"</span><span data-if="python" style="display:none">"novelty_threshold"</span></i>.
</p>
<p><i>Values:</i> float or integer value
</p>
<p><i>Default:</i> 0.0
</p>
</dd>
</dl>
<p><b>Parameters that influence the texture features:</b>
</p>
<dl class="generic">


<dt><b><i><span data-if="hdevelop" style="display:inline">'patch_normalization'</span><span data-if="c" style="display:none">"patch_normalization"</span><span data-if="cpp" style="display:none">"patch_normalization"</span><span data-if="com" style="display:none">"patch_normalization"</span><span data-if="dotnet" style="display:none">"patch_normalization"</span><span data-if="python" style="display:none">"patch_normalization"</span></i>:</b></dt>
<dd>
<p>
 Determines the method used to
normalize the texture features. A normalization is required if the
lighting between different images is not consistent. If set to
<i><span data-if="hdevelop" style="display:inline">'weber'</span><span data-if="c" style="display:none">"weber"</span><span data-if="cpp" style="display:none">"weber"</span><span data-if="com" style="display:none">"weber"</span><span data-if="dotnet" style="display:none">"weber"</span><span data-if="python" style="display:none">"weber"</span></i>, the patches are normalized in accordance with
the Weber-Fechner law. If the parameter is set to
<i><span data-if="hdevelop" style="display:inline">'none'</span><span data-if="c" style="display:none">"none"</span><span data-if="cpp" style="display:none">"none"</span><span data-if="com" style="display:none">"none"</span><span data-if="dotnet" style="display:none">"none"</span><span data-if="python" style="display:none">"none"</span></i>, no feature normalization is performed.
</p>
<p>Changing this parameter requires a complete new training of the texture
inspection model.
</p>
<p><i>Values:</i> <i><span data-if="hdevelop" style="display:inline">'none'</span><span data-if="c" style="display:none">"none"</span><span data-if="cpp" style="display:none">"none"</span><span data-if="com" style="display:none">"none"</span><span data-if="dotnet" style="display:none">"none"</span><span data-if="python" style="display:none">"none"</span></i>, <i><span data-if="hdevelop" style="display:inline">'weber'</span><span data-if="c" style="display:none">"weber"</span><span data-if="cpp" style="display:none">"weber"</span><span data-if="com" style="display:none">"weber"</span><span data-if="dotnet" style="display:none">"weber"</span><span data-if="python" style="display:none">"weber"</span></i>
</p>
<p><i>Default:</i> <i><span data-if="hdevelop" style="display:inline">'none'</span><span data-if="c" style="display:none">"none"</span><span data-if="cpp" style="display:none">"none"</span><span data-if="com" style="display:none">"none"</span><span data-if="dotnet" style="display:none">"none"</span><span data-if="python" style="display:none">"none"</span></i>
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'patch_rotational_robustness'</span><span data-if="c" style="display:none">"patch_rotational_robustness"</span><span data-if="cpp" style="display:none">"patch_rotational_robustness"</span><span data-if="com" style="display:none">"patch_rotational_robustness"</span><span data-if="dotnet" style="display:none">"patch_rotational_robustness"</span><span data-if="python" style="display:none">"patch_rotational_robustness"</span></i>:</b></dt>
<dd>
<p>
 If set to <i><span data-if="hdevelop" style="display:inline">'true'</span><span data-if="c" style="display:none">"true"</span><span data-if="cpp" style="display:none">"true"</span><span data-if="com" style="display:none">"true"</span><span data-if="dotnet" style="display:none">"true"</span><span data-if="python" style="display:none">"true"</span></i>,
the texture features are sorted in a way to obtain a certain amount of
rotational invariance. Sorting the features leads to a loss of feature
information and generally makes the texture inspection less
sensitive. Also, the runtime is slightly increased.  If the parameter is
set to <i><span data-if="hdevelop" style="display:inline">'false'</span><span data-if="c" style="display:none">"false"</span><span data-if="cpp" style="display:none">"false"</span><span data-if="com" style="display:none">"false"</span><span data-if="dotnet" style="display:none">"false"</span><span data-if="python" style="display:none">"false"</span></i>, the texture features are not sorted.
</p>
<p>Alternatively, it is possible to capture all possible rotations within
the training images. Increasing the training images leads to an increase
of the training time.
</p>
<p>Changing this parameter requires a complete new training of the texture
inspection model.
</p>
<p><i>Values:</i> <i><span data-if="hdevelop" style="display:inline">'true'</span><span data-if="c" style="display:none">"true"</span><span data-if="cpp" style="display:none">"true"</span><span data-if="com" style="display:none">"true"</span><span data-if="dotnet" style="display:none">"true"</span><span data-if="python" style="display:none">"true"</span></i>, <i><span data-if="hdevelop" style="display:inline">'false'</span><span data-if="c" style="display:none">"false"</span><span data-if="cpp" style="display:none">"false"</span><span data-if="com" style="display:none">"false"</span><span data-if="dotnet" style="display:none">"false"</span><span data-if="python" style="display:none">"false"</span></i>
</p>
<p><i>Default:</i> <i><span data-if="hdevelop" style="display:inline">'false'</span><span data-if="c" style="display:none">"false"</span><span data-if="cpp" style="display:none">"false"</span><span data-if="com" style="display:none">"false"</span><span data-if="dotnet" style="display:none">"false"</span><span data-if="python" style="display:none">"false"</span></i>
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'patch_size'</span><span data-if="c" style="display:none">"patch_size"</span><span data-if="cpp" style="display:none">"patch_size"</span><span data-if="com" style="display:none">"patch_size"</span><span data-if="dotnet" style="display:none">"patch_size"</span><span data-if="python" style="display:none">"patch_size"</span></i>:</b></dt>
<dd>
<p>
 This parameter determines the diameter of
the extracted texture feature patches in pixels.
Higher patch sizes increase the runtime significantly. Therefore this
parameter should only be changed with great care.
First try to change the image resolution or the number of pyramids used.
</p>
<p>Changing this parameter requires a complete new training of the texture
inspection model.
</p>
<p><i>Values:</i> odd integer values between 1 and 11
</p>
<p><i>Default:</i> 5
</p>
</dd>
</dl>
<p><b>Advanced parameters that influence the GMM classifiers:</b>
</p>
<p>Internally, the texture inspection model uses a Gaussian Mixture Model
(GMM) classifier. In general, it is recommended not to change the GMM
parameters, but for experienced users this is still possible.
</p>
<p>Changing these parameters requires a new training of the texture
inspection model.
</p>
<p>In the following, the parameters which influence the GMM classifiers are
described. For more information on classification with GMM classifiers, see
<a href="create_class_gmm.html"><code><span data-if="hdevelop" style="display:inline">create_class_gmm</span><span data-if="c" style="display:none">create_class_gmm</span><span data-if="cpp" style="display:none">CreateClassGmm</span><span data-if="com" style="display:none">CreateClassGmm</span><span data-if="dotnet" style="display:none">CreateClassGmm</span><span data-if="python" style="display:none">create_class_gmm</span></code></a> and <a href="train_class_gmm.html"><code><span data-if="hdevelop" style="display:inline">train_class_gmm</span><span data-if="c" style="display:none">train_class_gmm</span><span data-if="cpp" style="display:none">TrainClassGmm</span><span data-if="com" style="display:none">TrainClassGmm</span><span data-if="dotnet" style="display:none">TrainClassGmm</span><span data-if="python" style="display:none">train_class_gmm</span></code></a>.
</p>
<dl class="generic">


<dt><b><i><span data-if="hdevelop" style="display:inline">'gmm_sigma'</span><span data-if="c" style="display:none">"gmm_sigma"</span><span data-if="cpp" style="display:none">"gmm_sigma"</span><span data-if="com" style="display:none">"gmm_sigma"</span><span data-if="dotnet" style="display:none">"gmm_sigma"</span><span data-if="python" style="display:none">"gmm_sigma"</span></i>:</b></dt>
<dd>
<p>
 This parameter determines the standard
deviation of the Gaussian noise which is added to the training samples
(see <a href="add_sample_class_gmm.html"><code><span data-if="hdevelop" style="display:inline">add_sample_class_gmm</span><span data-if="c" style="display:none">add_sample_class_gmm</span><span data-if="cpp" style="display:none">AddSampleClassGmm</span><span data-if="com" style="display:none">AddSampleClassGmm</span><span data-if="dotnet" style="display:none">AddSampleClassGmm</span><span data-if="python" style="display:none">add_sample_class_gmm</span></code></a>).
</p>
<p><i>Values:</i> integer or float values larger or equal to 0.0
</p>
<p><i>Default:</i> 0.0
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'gmm_pmincenters'</span><span data-if="c" style="display:none">"gmm_pmincenters"</span><span data-if="cpp" style="display:none">"gmm_pmincenters"</span><span data-if="com" style="display:none">"gmm_pmincenters"</span><span data-if="dotnet" style="display:none">"gmm_pmincenters"</span><span data-if="python" style="display:none">"gmm_pmincenters"</span></i>:</b></dt>
<dd>
<p>
 This parameter determines the minimum
number of Gaussian distributions per class. <i><span data-if="hdevelop" style="display:inline">'gmm_pmincenters'</span><span data-if="c" style="display:none">"gmm_pmincenters"</span><span data-if="cpp" style="display:none">"gmm_pmincenters"</span><span data-if="com" style="display:none">"gmm_pmincenters"</span><span data-if="dotnet" style="display:none">"gmm_pmincenters"</span><span data-if="python" style="display:none">"gmm_pmincenters"</span></i>
cannot be set to a value larger than the current value of
<i><span data-if="hdevelop" style="display:inline">'gmm_pmaxcenters'</span><span data-if="c" style="display:none">"gmm_pmaxcenters"</span><span data-if="cpp" style="display:none">"gmm_pmaxcenters"</span><span data-if="com" style="display:none">"gmm_pmaxcenters"</span><span data-if="dotnet" style="display:none">"gmm_pmaxcenters"</span><span data-if="python" style="display:none">"gmm_pmaxcenters"</span></i>.
</p>
<p><i>Values:</i> integer value larger or equal to 1 and less or equal
to <i><span data-if="hdevelop" style="display:inline">'gmm_pmaxcenters'</span><span data-if="c" style="display:none">"gmm_pmaxcenters"</span><span data-if="cpp" style="display:none">"gmm_pmaxcenters"</span><span data-if="com" style="display:none">"gmm_pmaxcenters"</span><span data-if="dotnet" style="display:none">"gmm_pmaxcenters"</span><span data-if="python" style="display:none">"gmm_pmaxcenters"</span></i>
</p>
<p><i>Default:</i> 12
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'gmm_pmaxcenters'</span><span data-if="c" style="display:none">"gmm_pmaxcenters"</span><span data-if="cpp" style="display:none">"gmm_pmaxcenters"</span><span data-if="com" style="display:none">"gmm_pmaxcenters"</span><span data-if="dotnet" style="display:none">"gmm_pmaxcenters"</span><span data-if="python" style="display:none">"gmm_pmaxcenters"</span></i>:</b></dt>
<dd>
<p>
 This parameter determines the maximum
number of Gaussian distributions per class. <i><span data-if="hdevelop" style="display:inline">'gmm_pmaxcenters'</span><span data-if="c" style="display:none">"gmm_pmaxcenters"</span><span data-if="cpp" style="display:none">"gmm_pmaxcenters"</span><span data-if="com" style="display:none">"gmm_pmaxcenters"</span><span data-if="dotnet" style="display:none">"gmm_pmaxcenters"</span><span data-if="python" style="display:none">"gmm_pmaxcenters"</span></i>
cannot be set to a value smaller than the current value of
<i><span data-if="hdevelop" style="display:inline">'gmm_pmincenters'</span><span data-if="c" style="display:none">"gmm_pmincenters"</span><span data-if="cpp" style="display:none">"gmm_pmincenters"</span><span data-if="com" style="display:none">"gmm_pmincenters"</span><span data-if="dotnet" style="display:none">"gmm_pmincenters"</span><span data-if="python" style="display:none">"gmm_pmincenters"</span></i>.
</p>
<p><i>Values:</i> integer value larger or equal to <i><span data-if="hdevelop" style="display:inline">'gmm_pmincenters'</span><span data-if="c" style="display:none">"gmm_pmincenters"</span><span data-if="cpp" style="display:none">"gmm_pmincenters"</span><span data-if="com" style="display:none">"gmm_pmincenters"</span><span data-if="dotnet" style="display:none">"gmm_pmincenters"</span><span data-if="python" style="display:none">"gmm_pmincenters"</span></i>
</p>
<p><i>Default:</i> 12
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'gmm_preprocessing'</span><span data-if="c" style="display:none">"gmm_preprocessing"</span><span data-if="cpp" style="display:none">"gmm_preprocessing"</span><span data-if="com" style="display:none">"gmm_preprocessing"</span><span data-if="dotnet" style="display:none">"gmm_preprocessing"</span><span data-if="python" style="display:none">"gmm_preprocessing"</span></i>:</b></dt>
<dd>
<p>
 This parameter determines the type of
preprocessing used to transform the feature vectors.
</p>
<p><i>Values:</i> <i><span data-if="hdevelop" style="display:inline">'principal_components'</span><span data-if="c" style="display:none">"principal_components"</span><span data-if="cpp" style="display:none">"principal_components"</span><span data-if="com" style="display:none">"principal_components"</span><span data-if="dotnet" style="display:none">"principal_components"</span><span data-if="python" style="display:none">"principal_components"</span></i>, <i><span data-if="hdevelop" style="display:inline">'normalization'</span><span data-if="c" style="display:none">"normalization"</span><span data-if="cpp" style="display:none">"normalization"</span><span data-if="com" style="display:none">"normalization"</span><span data-if="dotnet" style="display:none">"normalization"</span><span data-if="python" style="display:none">"normalization"</span></i>,
<i><span data-if="hdevelop" style="display:inline">'none'</span><span data-if="c" style="display:none">"none"</span><span data-if="cpp" style="display:none">"none"</span><span data-if="com" style="display:none">"none"</span><span data-if="dotnet" style="display:none">"none"</span><span data-if="python" style="display:none">"none"</span></i>
</p>
<p><i>Default:</i> <i><span data-if="hdevelop" style="display:inline">'normalization'</span><span data-if="c" style="display:none">"normalization"</span><span data-if="cpp" style="display:none">"normalization"</span><span data-if="com" style="display:none">"normalization"</span><span data-if="dotnet" style="display:none">"normalization"</span><span data-if="python" style="display:none">"normalization"</span></i>
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'gmm_ncomp'</span><span data-if="c" style="display:none">"gmm_ncomp"</span><span data-if="cpp" style="display:none">"gmm_ncomp"</span><span data-if="com" style="display:none">"gmm_ncomp"</span><span data-if="dotnet" style="display:none">"gmm_ncomp"</span><span data-if="python" style="display:none">"gmm_ncomp"</span></i>:</b></dt>
<dd>
<p>
 This parameter manipulates the preprocessing
in case <i><span data-if="hdevelop" style="display:inline">'principal_components'</span><span data-if="c" style="display:none">"principal_components"</span><span data-if="cpp" style="display:none">"principal_components"</span><span data-if="com" style="display:none">"principal_components"</span><span data-if="dotnet" style="display:none">"principal_components"</span><span data-if="python" style="display:none">"principal_components"</span></i> is chosen as the preprocessing
method. More specifically, it determines the dimension of the transformed
feature vectors. It needs to be chosen such that it is
smaller than the feature dimension, which is
<i><span data-if="hdevelop" style="display:inline">'patch_size'</span><span data-if="c" style="display:none">"patch_size"</span><span data-if="cpp" style="display:none">"patch_size"</span><span data-if="com" style="display:none">"patch_size"</span><span data-if="dotnet" style="display:none">"patch_size"</span><span data-if="python" style="display:none">"patch_size"</span></i> <span title="1" style="vertical-align:-0.165107em" class="math"><!-- Created by MetaPost 1.902 on 2023.05.15:2033 --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="0.900873em" height="0.789172em" viewBox="0 0 14.413971 12.626755">
<!-- Original BoundingBox: -7.206985 -6.313370 7.206985 6.313385 -->
  <defs>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmsy10_2">
      <path style="fill-rule: evenodd;" d="M389.000000 -278.000000L189.000000 -477.000000C177.000000 -489.000000,175.000000 -491.000000,167.000000 -491.000000C157.000000 -491.000000,147.000000 -482.000000,147.000000 -471.000000C147.000000 -464.000000,149.000000 -462.000000,160.000000 -451.000000L360.000000 -250.000000L160.000000 -49.000000C149.000000 -38.000000,147.000000 -36.000000,147.000000 -29.000000C147.000000 -18.000000,157.000000 -9.000000,167.000000 -9.000000C175.000000 -9.000000,177.000000 -11.000000,189.000000 -23.000000L388.000000 -222.000000L595.000000 -15.000000C597.000000 -14.000000,604.000000 -9.000000,610.000000 -9.000000C622.000000 -9.000000,630.000000 -18.000000,630.000000 -29.000000C630.000000 -31.000000,630.000000 -35.000000,627.000000 -40.000000C626.000000 -42.000000,467.000000 -199.000000,417.000000 -250.000000L600.000000 -433.000000C605.000000 -439.000000,620.000000 -452.000000,625.000000 -458.000000C626.000000 -460.000000,630.000000 -464.000000,630.000000 -471.000000C630.000000 -482.000000,622.000000 -491.000000,610.000000 -491.000000C602.000000 -491.000000,598.000000 -487.000000,587.000000 -476.000000"></path>
    </g>
  </defs>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,0.809006 9.985046)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmsy10_2"></use>
  </g>
</svg></span> <i><span data-if="hdevelop" style="display:inline">'patch_size'</span><span data-if="c" style="display:none">"patch_size"</span><span data-if="cpp" style="display:none">"patch_size"</span><span data-if="com" style="display:none">"patch_size"</span><span data-if="dotnet" style="display:none">"patch_size"</span><span data-if="python" style="display:none">"patch_size"</span></i>.
If the <i><span data-if="hdevelop" style="display:inline">'patch_size'</span><span data-if="c" style="display:none">"patch_size"</span><span data-if="cpp" style="display:none">"patch_size"</span><span data-if="com" style="display:none">"patch_size"</span><span data-if="dotnet" style="display:none">"patch_size"</span><span data-if="python" style="display:none">"patch_size"</span></i> is changed such that
<i><span data-if="hdevelop" style="display:inline">'patch_size'</span><span data-if="c" style="display:none">"patch_size"</span><span data-if="cpp" style="display:none">"patch_size"</span><span data-if="com" style="display:none">"patch_size"</span><span data-if="dotnet" style="display:none">"patch_size"</span><span data-if="python" style="display:none">"patch_size"</span></i> <span title="2" style="vertical-align:-0.165107em" class="math"><!-- Created by MetaPost 1.902 on 2023.05.15:2033 --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="0.900873em" height="0.789172em" viewBox="0 0 14.413971 12.626755">
<!-- Original BoundingBox: -7.206985 -6.313370 7.206985 6.313385 -->
  <defs>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmsy10_2">
      <path style="fill-rule: evenodd;" d="M389.000000 -278.000000L189.000000 -477.000000C177.000000 -489.000000,175.000000 -491.000000,167.000000 -491.000000C157.000000 -491.000000,147.000000 -482.000000,147.000000 -471.000000C147.000000 -464.000000,149.000000 -462.000000,160.000000 -451.000000L360.000000 -250.000000L160.000000 -49.000000C149.000000 -38.000000,147.000000 -36.000000,147.000000 -29.000000C147.000000 -18.000000,157.000000 -9.000000,167.000000 -9.000000C175.000000 -9.000000,177.000000 -11.000000,189.000000 -23.000000L388.000000 -222.000000L595.000000 -15.000000C597.000000 -14.000000,604.000000 -9.000000,610.000000 -9.000000C622.000000 -9.000000,630.000000 -18.000000,630.000000 -29.000000C630.000000 -31.000000,630.000000 -35.000000,627.000000 -40.000000C626.000000 -42.000000,467.000000 -199.000000,417.000000 -250.000000L600.000000 -433.000000C605.000000 -439.000000,620.000000 -452.000000,625.000000 -458.000000C626.000000 -460.000000,630.000000 -464.000000,630.000000 -471.000000C630.000000 -482.000000,622.000000 -491.000000,610.000000 -491.000000C602.000000 -491.000000,598.000000 -487.000000,587.000000 -476.000000"></path>
    </g>
  </defs>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,0.809006 9.985046)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmsy10_2"></use>
  </g>
</svg></span> <i><span data-if="hdevelop" style="display:inline">'patch_size'</span><span data-if="c" style="display:none">"patch_size"</span><span data-if="cpp" style="display:none">"patch_size"</span><span data-if="com" style="display:none">"patch_size"</span><span data-if="dotnet" style="display:none">"patch_size"</span><span data-if="python" style="display:none">"patch_size"</span></i> <span title="3" style="vertical-align:-0.139466em" class="math"><!-- Created by MetaPost 1.902 on 2023.05.15:2033 --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="0.900873em" height="0.701033em" viewBox="0 0 14.413971 11.216522">
<!-- Original BoundingBox: -7.206985 -5.608261 7.206985 5.608261 -->
  <defs>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmmi10_60">
      <path style="fill-rule: evenodd;" d="M675.000000 -498.000000C687.000000 -504.000000,694.000000 -509.000000,694.000000 -520.000000C694.000000 -531.000000,685.000000 -540.000000,674.000000 -540.000000C671.000000 -540.000000,669.000000 -540.000000,656.000000 -533.000000L102.000000 -272.000000C91.000000 -267.000000,83.000000 -262.000000,83.000000 -250.000000C83.000000 -238.000000,91.000000 -233.000000,102.000000 -228.000000L656.000000 33.000000C669.000000 40.000000,671.000000 40.000000,674.000000 40.000000C685.000000 40.000000,694.000000 31.000000,694.000000 20.000000C694.000000 9.000000,687.000000 4.000000,675.000000 -2.000000L150.000000 -250.000000"></path>
    </g>
  </defs>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,0.809006 8.985062)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_60"></use>
  </g>
</svg></span>
<i><span data-if="hdevelop" style="display:inline">'gmm_ncomp'</span><span data-if="c" style="display:none">"gmm_ncomp"</span><span data-if="cpp" style="display:none">"gmm_ncomp"</span><span data-if="com" style="display:none">"gmm_ncomp"</span><span data-if="dotnet" style="display:none">"gmm_ncomp"</span><span data-if="python" style="display:none">"gmm_ncomp"</span></i>, the parameter is manipulated accordingly.
</p>
<p><i>Values:</i> integer value larger or equal to 1
</p>
<p><i>Default:</i> 15
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'gmm_randseed'</span><span data-if="c" style="display:none">"gmm_randseed"</span><span data-if="cpp" style="display:none">"gmm_randseed"</span><span data-if="com" style="display:none">"gmm_randseed"</span><span data-if="dotnet" style="display:none">"gmm_randseed"</span><span data-if="python" style="display:none">"gmm_randseed"</span></i>:</b></dt>
<dd>
<p>
 This parameter determines the
initialization value for the random number generator, which is required to
initialize the GMM with random values.
</p>
<p><i>Values:</i> integer value
</p>
<p><i>Default:</i> 42
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'gmm_em_max_iter'</span><span data-if="c" style="display:none">"gmm_em_max_iter"</span><span data-if="cpp" style="display:none">"gmm_em_max_iter"</span><span data-if="com" style="display:none">"gmm_em_max_iter"</span><span data-if="dotnet" style="display:none">"gmm_em_max_iter"</span><span data-if="python" style="display:none">"gmm_em_max_iter"</span></i>:</b></dt>
<dd>
<p>
 This parameter determines the maximum
number of iterations of the expectation maximization algorithm.
</p>
<p><i>Values:</i> integer values larger or equal to 0
</p>
<p><i>Default:</i> 100
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'gmm_em_threshold'</span><span data-if="c" style="display:none">"gmm_em_threshold"</span><span data-if="cpp" style="display:none">"gmm_em_threshold"</span><span data-if="com" style="display:none">"gmm_em_threshold"</span><span data-if="dotnet" style="display:none">"gmm_em_threshold"</span><span data-if="python" style="display:none">"gmm_em_threshold"</span></i>:</b></dt>
<dd>
<p>
 This parameter determines the
threshold for the relative change of the error for the expectation
maximization algorithm to terminate.
</p>
<p><i>Values:</i> integer or float value larger or equal to 0 and smaller
than 1.0
</p>
<p><i>Default:</i> 0.001
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'gmm_em_regularize'</span><span data-if="c" style="display:none">"gmm_em_regularize"</span><span data-if="cpp" style="display:none">"gmm_em_regularize"</span><span data-if="com" style="display:none">"gmm_em_regularize"</span><span data-if="dotnet" style="display:none">"gmm_em_regularize"</span><span data-if="python" style="display:none">"gmm_em_regularize"</span></i>:</b></dt>
<dd>
<p>
 This parameter determines the
regularization value for preventing covariance matrix singularity within
the training process.
</p>
<p><i>Values:</i> integer or float values larger or equal to 0 and smaller
than 1.0
</p>
<p><i>Default:</i> 0.0001
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'gmm_covartype'</span><span data-if="c" style="display:none">"gmm_covartype"</span><span data-if="cpp" style="display:none">"gmm_covartype"</span><span data-if="com" style="display:none">"gmm_covartype"</span><span data-if="dotnet" style="display:none">"gmm_covartype"</span><span data-if="python" style="display:none">"gmm_covartype"</span></i>:</b></dt>
<dd>
<p>
 This parameter determines the type of
covariance matrix that is used internally.
</p>
<p><i>Values:</i> <i><span data-if="hdevelop" style="display:inline">'spherical'</span><span data-if="c" style="display:none">"spherical"</span><span data-if="cpp" style="display:none">"spherical"</span><span data-if="com" style="display:none">"spherical"</span><span data-if="dotnet" style="display:none">"spherical"</span><span data-if="python" style="display:none">"spherical"</span></i>, <i><span data-if="hdevelop" style="display:inline">'diag'</span><span data-if="c" style="display:none">"diag"</span><span data-if="cpp" style="display:none">"diag"</span><span data-if="com" style="display:none">"diag"</span><span data-if="dotnet" style="display:none">"diag"</span><span data-if="python" style="display:none">"diag"</span></i>, <i><span data-if="hdevelop" style="display:inline">'full'</span><span data-if="c" style="display:none">"full"</span><span data-if="cpp" style="display:none">"full"</span><span data-if="com" style="display:none">"full"</span><span data-if="dotnet" style="display:none">"full"</span><span data-if="python" style="display:none">"full"</span></i>
</p>
<p><i>Default:</i> <i><span data-if="hdevelop" style="display:inline">'diag'</span><span data-if="c" style="display:none">"diag"</span><span data-if="cpp" style="display:none">"diag"</span><span data-if="com" style="display:none">"diag"</span><span data-if="dotnet" style="display:none">"diag"</span><span data-if="python" style="display:none">"diag"</span></i>
</p>
</dd>
</dl>
<h3>Changing the parameters of a trained texture inspection model</h3>
<p>If parameters of a texture inspection model are manipulated after a
successful call of <a href="train_texture_inspection_model.html"><code><span data-if="hdevelop" style="display:inline">train_texture_inspection_model</span><span data-if="c" style="display:none">train_texture_inspection_model</span><span data-if="cpp" style="display:none">TrainTextureInspectionModel</span><span data-if="com" style="display:none">TrainTextureInspectionModel</span><span data-if="dotnet" style="display:none">TrainTextureInspectionModel</span><span data-if="python" style="display:none">train_texture_inspection_model</span></code></a>, the texture
inspection model usually needs to be retrained. Depending on which parameters
are changed, different parts of the training need to be recalculated.
</p>
<p>A manipulation of the parameters <i><span data-if="hdevelop" style="display:inline">'gmm_*'</span><span data-if="c" style="display:none">"gmm_*"</span><span data-if="cpp" style="display:none">"gmm_*"</span><span data-if="com" style="display:none">"gmm_*"</span><span data-if="dotnet" style="display:none">"gmm_*"</span><span data-if="python" style="display:none">"gmm_*"</span></i>
requires a new training of the classifiers. Since a new classifier yields
different novelty scores, the novelty thresholds also need to be
recalculated. The parameter <i><span data-if="hdevelop" style="display:inline">'patch_*'</span><span data-if="c" style="display:none">"patch_*"</span><span data-if="cpp" style="display:none">"patch_*"</span><span data-if="com" style="display:none">"patch_*"</span><span data-if="dotnet" style="display:none">"patch_*"</span><span data-if="python" style="display:none">"patch_*"</span></i>
requires a complete new training of the texture inspection model. The
parameters <i><span data-if="hdevelop" style="display:inline">'num_levels'</span><span data-if="c" style="display:none">"num_levels"</span><span data-if="cpp" style="display:none">"num_levels"</span><span data-if="com" style="display:none">"num_levels"</span><span data-if="dotnet" style="display:none">"num_levels"</span><span data-if="python" style="display:none">"num_levels"</span></i> and <i><span data-if="hdevelop" style="display:inline">'levels'</span><span data-if="c" style="display:none">"levels"</span><span data-if="cpp" style="display:none">"levels"</span><span data-if="com" style="display:none">"levels"</span><span data-if="dotnet" style="display:none">"levels"</span><span data-if="python" style="display:none">"levels"</span></i> require a retraining
if the number of levels is increased or levels are set which were not trained
beforehand. For example, setting <i><span data-if="hdevelop" style="display:inline">'levels'</span><span data-if="c" style="display:none">"levels"</span><span data-if="cpp" style="display:none">"levels"</span><span data-if="com" style="display:none">"levels"</span><span data-if="dotnet" style="display:none">"levels"</span><span data-if="python" style="display:none">"levels"</span></i> from [1,2,3] to [1,3]
does not require a retraining.
该算子 <i><span data-if="hdevelop" style="display:inline">'gen_result_handle'</span><span data-if="c" style="display:none">"gen_result_handle"</span><span data-if="cpp" style="display:none">"gen_result_handle"</span><span data-if="com" style="display:none">"gen_result_handle"</span><span data-if="dotnet" style="display:none">"gen_result_handle"</span><span data-if="python" style="display:none">"gen_result_handle"</span></i> has no effect on a trained
texture inspection model and can be manipulated without requiring any
retraining.
</p>
<h2 id="sec_execution">运行信息</h2>
<ul>
  <li>多线程类型:可重入(与非独占操作符并行运行)。</li>
<li>多线程作用域:全局(可以从任何线程调用)。</li>
  <li>未经并行化处理。</li>
</ul>
<p>This operator modifies the state of the following input parameter:</p>
<ul><li><a href="#TextureInspectionModel"><span data-if="hdevelop" style="display:inline">TextureInspectionModel</span><span data-if="c" style="display:none">TextureInspectionModel</span><span data-if="cpp" style="display:none">TextureInspectionModel</span><span data-if="com" style="display:none">TextureInspectionModel</span><span data-if="dotnet" style="display:none">textureInspectionModel</span><span data-if="python" style="display:none">texture_inspection_model</span></a></li></ul>
<p>During execution of this operator, access to the value of this parameter must be synchronized if it is used across multiple threads.</p>
<h2 id="sec_parameters">参数表</h2>
  <div class="par">
<div class="parhead">
<span id="TextureInspectionModel" class="parname"><b><code><span data-if="hdevelop" style="display:inline">TextureInspectionModel</span><span data-if="c" style="display:none">TextureInspectionModel</span><span data-if="cpp" style="display:none">TextureInspectionModel</span><span data-if="com" style="display:none">TextureInspectionModel</span><span data-if="dotnet" style="display:none">textureInspectionModel</span><span data-if="python" style="display:none">texture_inspection_model</span></code></b> (input_control, state is modified)  </span><span>texture_inspection_model <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTextureInspectionModel.html">HTextureInspectionModel</a>, </span><span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">HHandle</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (handle)</span><span data-if="dotnet" style="display:none"> (<i>IntPtr</i>)</span><span data-if="cpp" style="display:none"> (<i>HHandle</i>)</span><span data-if="c" style="display:none"> (<i>handle</i>)</span></span>
</div>
<p class="pardesc">Handle of the texture inspection model.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="GenParamName" class="parname"><b><code><span data-if="hdevelop" style="display:inline">GenParamName</span><span data-if="c" style="display:none">GenParamName</span><span data-if="cpp" style="display:none">GenParamName</span><span data-if="com" style="display:none">GenParamName</span><span data-if="dotnet" style="display:none">genParamName</span><span data-if="python" style="display:none">gen_param_name</span></code></b> (input_control)  </span><span>attribute.name(-array) <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">MaybeSequence[str]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (string)</span><span data-if="dotnet" style="display:none"> (<i>string</i>)</span><span data-if="cpp" style="display:none"> (<i>HString</i>)</span><span data-if="c" style="display:none"> (<i>char*</i>)</span></span>
</div>
<p class="pardesc">Name of the model parameter to be adjusted.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>
    <span data-if="hdevelop" style="display:inline">'gen_result_handle'</span>
    <span data-if="c" style="display:none">"gen_result_handle"</span>
    <span data-if="cpp" style="display:none">"gen_result_handle"</span>
    <span data-if="com" style="display:none">"gen_result_handle"</span>
    <span data-if="dotnet" style="display:none">"gen_result_handle"</span>
    <span data-if="python" style="display:none">"gen_result_handle"</span>
</p>
<p class="pardesc"><span class="parcat">List of values:
      </span><span data-if="hdevelop" style="display:inline">'gen_result_handle'</span><span data-if="c" style="display:none">"gen_result_handle"</span><span data-if="cpp" style="display:none">"gen_result_handle"</span><span data-if="com" style="display:none">"gen_result_handle"</span><span data-if="dotnet" style="display:none">"gen_result_handle"</span><span data-if="python" style="display:none">"gen_result_handle"</span>, <span data-if="hdevelop" style="display:inline">'gmm_covartype'</span><span data-if="c" style="display:none">"gmm_covartype"</span><span data-if="cpp" style="display:none">"gmm_covartype"</span><span data-if="com" style="display:none">"gmm_covartype"</span><span data-if="dotnet" style="display:none">"gmm_covartype"</span><span data-if="python" style="display:none">"gmm_covartype"</span>, <span data-if="hdevelop" style="display:inline">'gmm_em_max_iter'</span><span data-if="c" style="display:none">"gmm_em_max_iter"</span><span data-if="cpp" style="display:none">"gmm_em_max_iter"</span><span data-if="com" style="display:none">"gmm_em_max_iter"</span><span data-if="dotnet" style="display:none">"gmm_em_max_iter"</span><span data-if="python" style="display:none">"gmm_em_max_iter"</span>, <span data-if="hdevelop" style="display:inline">'gmm_em_regularize'</span><span data-if="c" style="display:none">"gmm_em_regularize"</span><span data-if="cpp" style="display:none">"gmm_em_regularize"</span><span data-if="com" style="display:none">"gmm_em_regularize"</span><span data-if="dotnet" style="display:none">"gmm_em_regularize"</span><span data-if="python" style="display:none">"gmm_em_regularize"</span>, <span data-if="hdevelop" style="display:inline">'gmm_em_threshold'</span><span data-if="c" style="display:none">"gmm_em_threshold"</span><span data-if="cpp" style="display:none">"gmm_em_threshold"</span><span data-if="com" style="display:none">"gmm_em_threshold"</span><span data-if="dotnet" style="display:none">"gmm_em_threshold"</span><span data-if="python" style="display:none">"gmm_em_threshold"</span>, <span data-if="hdevelop" style="display:inline">'gmm_ncomp'</span><span data-if="c" style="display:none">"gmm_ncomp"</span><span data-if="cpp" style="display:none">"gmm_ncomp"</span><span data-if="com" style="display:none">"gmm_ncomp"</span><span data-if="dotnet" style="display:none">"gmm_ncomp"</span><span data-if="python" style="display:none">"gmm_ncomp"</span>, <span data-if="hdevelop" style="display:inline">'gmm_pmaxcenters'</span><span data-if="c" style="display:none">"gmm_pmaxcenters"</span><span data-if="cpp" style="display:none">"gmm_pmaxcenters"</span><span data-if="com" style="display:none">"gmm_pmaxcenters"</span><span data-if="dotnet" style="display:none">"gmm_pmaxcenters"</span><span data-if="python" style="display:none">"gmm_pmaxcenters"</span>, <span data-if="hdevelop" style="display:inline">'gmm_pmincenters'</span><span data-if="c" style="display:none">"gmm_pmincenters"</span><span data-if="cpp" style="display:none">"gmm_pmincenters"</span><span data-if="com" style="display:none">"gmm_pmincenters"</span><span data-if="dotnet" style="display:none">"gmm_pmincenters"</span><span data-if="python" style="display:none">"gmm_pmincenters"</span>, <span data-if="hdevelop" style="display:inline">'gmm_preprocessing'</span><span data-if="c" style="display:none">"gmm_preprocessing"</span><span data-if="cpp" style="display:none">"gmm_preprocessing"</span><span data-if="com" style="display:none">"gmm_preprocessing"</span><span data-if="dotnet" style="display:none">"gmm_preprocessing"</span><span data-if="python" style="display:none">"gmm_preprocessing"</span>, <span data-if="hdevelop" style="display:inline">'gmm_randseed'</span><span data-if="c" style="display:none">"gmm_randseed"</span><span data-if="cpp" style="display:none">"gmm_randseed"</span><span data-if="com" style="display:none">"gmm_randseed"</span><span data-if="dotnet" style="display:none">"gmm_randseed"</span><span data-if="python" style="display:none">"gmm_randseed"</span>, <span data-if="hdevelop" style="display:inline">'gmm_sigma'</span><span data-if="c" style="display:none">"gmm_sigma"</span><span data-if="cpp" style="display:none">"gmm_sigma"</span><span data-if="com" style="display:none">"gmm_sigma"</span><span data-if="dotnet" style="display:none">"gmm_sigma"</span><span data-if="python" style="display:none">"gmm_sigma"</span>, <span data-if="hdevelop" style="display:inline">'levels'</span><span data-if="c" style="display:none">"levels"</span><span data-if="cpp" style="display:none">"levels"</span><span data-if="com" style="display:none">"levels"</span><span data-if="dotnet" style="display:none">"levels"</span><span data-if="python" style="display:none">"levels"</span>, <span data-if="hdevelop" style="display:inline">'novelty_threshold'</span><span data-if="c" style="display:none">"novelty_threshold"</span><span data-if="cpp" style="display:none">"novelty_threshold"</span><span data-if="com" style="display:none">"novelty_threshold"</span><span data-if="dotnet" style="display:none">"novelty_threshold"</span><span data-if="python" style="display:none">"novelty_threshold"</span>, <span data-if="hdevelop" style="display:inline">'num_levels'</span><span data-if="c" style="display:none">"num_levels"</span><span data-if="cpp" style="display:none">"num_levels"</span><span data-if="com" style="display:none">"num_levels"</span><span data-if="dotnet" style="display:none">"num_levels"</span><span data-if="python" style="display:none">"num_levels"</span>, <span data-if="hdevelop" style="display:inline">'patch_normalization'</span><span data-if="c" style="display:none">"patch_normalization"</span><span data-if="cpp" style="display:none">"patch_normalization"</span><span data-if="com" style="display:none">"patch_normalization"</span><span data-if="dotnet" style="display:none">"patch_normalization"</span><span data-if="python" style="display:none">"patch_normalization"</span>, <span data-if="hdevelop" style="display:inline">'patch_rotational_robustness'</span><span data-if="c" style="display:none">"patch_rotational_robustness"</span><span data-if="cpp" style="display:none">"patch_rotational_robustness"</span><span data-if="com" style="display:none">"patch_rotational_robustness"</span><span data-if="dotnet" style="display:none">"patch_rotational_robustness"</span><span data-if="python" style="display:none">"patch_rotational_robustness"</span>, <span data-if="hdevelop" style="display:inline">'patch_size'</span><span data-if="c" style="display:none">"patch_size"</span><span data-if="cpp" style="display:none">"patch_size"</span><span data-if="com" style="display:none">"patch_size"</span><span data-if="dotnet" style="display:none">"patch_size"</span><span data-if="python" style="display:none">"patch_size"</span>, <span data-if="hdevelop" style="display:inline">'sensitivity'</span><span data-if="c" style="display:none">"sensitivity"</span><span data-if="cpp" style="display:none">"sensitivity"</span><span data-if="com" style="display:none">"sensitivity"</span><span data-if="dotnet" style="display:none">"sensitivity"</span><span data-if="python" style="display:none">"sensitivity"</span></p>
</div>
  <div class="par">
<div class="parhead">
<span id="GenParamValue" class="parname"><b><code><span data-if="hdevelop" style="display:inline">GenParamValue</span><span data-if="c" style="display:none">GenParamValue</span><span data-if="cpp" style="display:none">GenParamValue</span><span data-if="com" style="display:none">GenParamValue</span><span data-if="dotnet" style="display:none">genParamValue</span><span data-if="python" style="display:none">gen_param_value</span></code></b> (input_control)  </span><span>attribute.value(-array) <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">MaybeSequence[Union[int, float, str]]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (integer / </span><span data-if="hdevelop" style="display:inline">real / </span><span data-if="hdevelop" style="display:inline">string)</span><span data-if="dotnet" style="display:none"> (<i>int</i> / </span><span data-if="dotnet" style="display:none">long / </span><span data-if="dotnet" style="display:none">double / </span><span data-if="dotnet" style="display:none">string)</span><span data-if="cpp" style="display:none"> (<i>Hlong</i> / </span><span data-if="cpp" style="display:none">double / </span><span data-if="cpp" style="display:none">HString)</span><span data-if="c" style="display:none"> (<i>Hlong</i> / </span><span data-if="c" style="display:none">double / </span><span data-if="c" style="display:none">char*)</span></span>
</div>
<p class="pardesc">New value of the model parameter.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>
    <span data-if="hdevelop" style="display:inline">'true'</span>
    <span data-if="c" style="display:none">"true"</span>
    <span data-if="cpp" style="display:none">"true"</span>
    <span data-if="com" style="display:none">"true"</span>
    <span data-if="dotnet" style="display:none">"true"</span>
    <span data-if="python" style="display:none">"true"</span>
</p>
<p class="pardesc"><span class="parcat">List of values:
      </span>5, <span data-if="hdevelop" style="display:inline">'auto'</span><span data-if="c" style="display:none">"auto"</span><span data-if="cpp" style="display:none">"auto"</span><span data-if="com" style="display:none">"auto"</span><span data-if="dotnet" style="display:none">"auto"</span><span data-if="python" style="display:none">"auto"</span>, <span data-if="hdevelop" style="display:inline">'false'</span><span data-if="c" style="display:none">"false"</span><span data-if="cpp" style="display:none">"false"</span><span data-if="com" style="display:none">"false"</span><span data-if="dotnet" style="display:none">"false"</span><span data-if="python" style="display:none">"false"</span>, <span data-if="hdevelop" style="display:inline">'none'</span><span data-if="c" style="display:none">"none"</span><span data-if="cpp" style="display:none">"none"</span><span data-if="com" style="display:none">"none"</span><span data-if="dotnet" style="display:none">"none"</span><span data-if="python" style="display:none">"none"</span>, <span data-if="hdevelop" style="display:inline">'normalization'</span><span data-if="c" style="display:none">"normalization"</span><span data-if="cpp" style="display:none">"normalization"</span><span data-if="com" style="display:none">"normalization"</span><span data-if="dotnet" style="display:none">"normalization"</span><span data-if="python" style="display:none">"normalization"</span>, <span data-if="hdevelop" style="display:inline">'principal_components'</span><span data-if="c" style="display:none">"principal_components"</span><span data-if="cpp" style="display:none">"principal_components"</span><span data-if="com" style="display:none">"principal_components"</span><span data-if="dotnet" style="display:none">"principal_components"</span><span data-if="python" style="display:none">"principal_components"</span>, <span data-if="hdevelop" style="display:inline">'true'</span><span data-if="c" style="display:none">"true"</span><span data-if="cpp" style="display:none">"true"</span><span data-if="com" style="display:none">"true"</span><span data-if="dotnet" style="display:none">"true"</span><span data-if="python" style="display:none">"true"</span>, <span data-if="hdevelop" style="display:inline">'weber'</span><span data-if="c" style="display:none">"weber"</span><span data-if="cpp" style="display:none">"weber"</span><span data-if="com" style="display:none">"weber"</span><span data-if="dotnet" style="display:none">"weber"</span><span data-if="python" style="display:none">"weber"</span></p>
</div>
<h2 id="sec_example_all">例程 (HDevelop)</h2>
<pre class="example">
* Create texture inspection model
create_texture_inspection_model ('basic', TextureInspectionModel)
* Set parameters
set_texture_inspection_model_param (TextureInspectionModel, \
                                    'gen_result_handle', 'true')
* Make this short example fast:
set_texture_inspection_model_param (TextureInspectionModel, \
                                    'gmm_em_max_iter', 1)
* Read and add training images
read_image (TrainImage, 'carpet/carpet_01')
add_texture_inspection_model_image (TrainImage, TextureInspectionModel, \
                                    Indices)
* Train the model
train_texture_inspection_model (TextureInspectionModel)
* Read and apply a test image
read_image (TestImage, 'carpet/carpet_02')
apply_texture_inspection_model (TestImage, DefectCandidates, \
                                TextureInspectionModel, \
                                TextureInspectionResultID)
</pre>
<h2 id="sec_result">结果</h2>
<p>该算子 <code><span data-if="hdevelop" style="display:inline">set_texture_inspection_model_param</span><span data-if="c" style="display:none">set_texture_inspection_model_param</span><span data-if="cpp" style="display:none">SetTextureInspectionModelParam</span><span data-if="com" style="display:none">SetTextureInspectionModelParam</span><span data-if="dotnet" style="display:none">SetTextureInspectionModelParam</span><span data-if="python" style="display:none">set_texture_inspection_model_param</span></code> 返回值
<TT>2</TT> (
      <TT>H_MSG_TRUE</TT>)
     if the given parameters are valid and within acceptable range.
Otherwise, an exception will be raised.</p>
<h2 id="sec_predecessors">可能的前置算子</h2>
<p>
<code><a href="create_texture_inspection_model.html"><span data-if="hdevelop" style="display:inline">create_texture_inspection_model</span><span data-if="c" style="display:none">create_texture_inspection_model</span><span data-if="cpp" style="display:none">CreateTextureInspectionModel</span><span data-if="com" style="display:none">CreateTextureInspectionModel</span><span data-if="dotnet" style="display:none">CreateTextureInspectionModel</span><span data-if="python" style="display:none">create_texture_inspection_model</span></a></code>
</p>
<h2 id="sec_successors">可能的后置算子</h2>
<p>
<code><a href="add_texture_inspection_model_image.html"><span data-if="hdevelop" style="display:inline">add_texture_inspection_model_image</span><span data-if="c" style="display:none">add_texture_inspection_model_image</span><span data-if="cpp" style="display:none">AddTextureInspectionModelImage</span><span data-if="com" style="display:none">AddTextureInspectionModelImage</span><span data-if="dotnet" style="display:none">AddTextureInspectionModelImage</span><span data-if="python" style="display:none">add_texture_inspection_model_image</span></a></code>, 
<code><a href="train_texture_inspection_model.html"><span data-if="hdevelop" style="display:inline">train_texture_inspection_model</span><span data-if="c" style="display:none">train_texture_inspection_model</span><span data-if="cpp" style="display:none">TrainTextureInspectionModel</span><span data-if="com" style="display:none">TrainTextureInspectionModel</span><span data-if="dotnet" style="display:none">TrainTextureInspectionModel</span><span data-if="python" style="display:none">train_texture_inspection_model</span></a></code>
</p>
<h2 id="sec_see">参考其它</h2>
<p>
<code><a href="get_texture_inspection_model_param.html"><span data-if="hdevelop" style="display:inline">get_texture_inspection_model_param</span><span data-if="c" style="display:none">get_texture_inspection_model_param</span><span data-if="cpp" style="display:none">GetTextureInspectionModelParam</span><span data-if="com" style="display:none">GetTextureInspectionModelParam</span><span data-if="dotnet" style="display:none">GetTextureInspectionModelParam</span><span data-if="python" style="display:none">get_texture_inspection_model_param</span></a></code>
</p>
<h2 id="sec_module">模块</h2>
<p>
Matching</p>
<!--OP_REF_FOOTER_START-->
<hr>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<div class="footer">
<div class="copyright">HALCON算子参考手册 Copyright © 2015-2023 51Halcon</div>
</div>
</div>
</body>
</html>
